package com.itheima.service;

import com.itheima.pojo.Class;
import com.itheima.pojo.Dept;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

public interface ClassService {
     /*1. 新增班级（10分）
2. 批量删除班级（不用考虑班级还有学生的情况）（10分）
3. 查询班级列表（5分）
4. 根据职位Id查询班主任列表（5分）
5. 带条件的分页查询（10分）
   1. 输入 班级名称 进行搜索，支持模糊查询。
   2. 选择开始时间 和 结束时间进行查询，查询结课时间 在开始时间 和 结束时间范围内(包含)的班级数据。
6. 修改班级（10分）*/
    /**
     * 查询全部班级数据
     * @return
     */
    List<Class> list();

    /**
     * 批量
     * 删除班级
     * @param ids
     */
    void delete(List<Integer> ids) ;

    /**
     * 新增班级
     * @param clazz
     */
    void add(Class clazz);

    /**
     * 根据职位id查询班主任列表
     * @param jobId
     * @return
     */
    Emp[] findByJobId(Short jobId);
    /* 带条件的分页查询（10分）
   1. 输入 班级名称 进行搜索，支持模糊查询。
   2. 选择开始时间 和 结束时间进行查询，查询结课时间 在开始时间 和 结束时间范围内(包含)的班级数据。
6. 修改班级（10分）*/

    /**
     * 根据班级名称查询
     * @param className
     * @return
     */
    Class[] findByClassName(String className);

    /**
     * 根据结课时间查询，查询结课时间 在开始时间 和 结束时间范围内(包含)的班级数据
     * @param startTime
     * @param endTime
     * @return
     */
    Class[] findByEndTime(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 修改班级
     * @param c
     * @throws Exception
     */
    void update(Class c) ;

    /**
     *  带条件的分页查询（10分）
     *    1. 输入 班级名称 进行搜索，支持模糊查询。
     *    2. 选择开始时间 和 结束时间进行查询，查询结课时间 在开始时间 和 结束时间范围内(包含)的班级数据。
     * @param page
     * @param pageSize
     * @param name
     * @param begin
     * @param end
     * @return
     */
    PageBean page(Integer page, Integer pageSize, String name, LocalDate begin, LocalDate end);
}
